home *** CD-ROM | disk | FTP | other *** search
- /*==========================================================================+
- | calcs.e |
- | various useful calculations |
- +--------------------------------------------------------------------------*/
-
- OPT MODULE
-
- /*-------------------------------------------------------------------------*/
-
- -> reverb calculations
-
- CONST LN1m = $C0DD0C55 -> Flog(0.001)
-
- EXPORT PROC oss_DecayReverb2Delay(decay,reverb)
- ENDPROC ! Flog(decay) * reverb / LN1m
-
- EXPORT PROC oss_DelayReverb2Decay(delay,reverb)
- ENDPROC ! Fexp(! LN1m * delay / reverb)
-
- EXPORT PROC oss_DelayDecay2Reverb(delay,decay)
- ENDPROC ! LN1m * delay / Flog(decay)
-
- /*-------------------------------------------------------------------------*/
-
- -> frequency calculations
-
- -> 3579545 NTSC
- CONST CLOCK = 3546895 -> PAL
-
- EXPORT PROC oss_Period2Frequency(period) IS Div(CLOCK, period)
- EXPORT PROC oss_Frequency2Period(frequency) IS Div(CLOCK, frequency)
-
- -> look up in table
- EXPORT PROC oss_NoteFinetune2Period(note, finetune)
- IF (0 < note) AND (note <= 36) AND
- (-8 <= finetune) AND (finetune <= 7)
- RETURN Int( {periodtable} +
- ((note-1) * 32) +
- ((finetune+8) * 2) )
- ENDIF
- ENDPROC 0
-
- -> search in table
- EXPORT PROC oss_Period2NoteFinetune(period)
- DEF note0, finetune0, period0,
- note1, finetune1, period1,
- note, finetune,
- table : PTR TO INT, i = 0
- IF (108 <= period) AND (period <= 907)
- table := {periodtable}
- note := 1
- finetune := -8
- FOR i := 0 TO 575
- IF table[i] = period
- RETURN note,finetune
- ELSEIF table[i] > period
- note0 := note
- finetune0 := finetune
- period0 := table[i]
- ELSEIF table[i] < period
- note1 := note
- finetune1 := finetune
- period1 := table[i]
- -> period0 > period > period1
- IF (period0 - period) > (period - period1)
- RETURN note1,finetune1
- ELSE
- RETURN note0,finetune0
- ENDIF
- ENDIF
- finetune++
- IF finetune = 8
- finetune := -8
- note++
- ENDIF
- ENDFOR
- -> should never be reached
- ENDIF
- ENDPROC 0,0
-
- -> info from "OctaMED_Soundstudio_CD:Soundstudio V1/PROGRAMMERS/proplayer.a"
- periodtable: -> searchable on period
- -> -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 finetune
- INT 907,900,894,887,881,875,868,862,856,850,844,838,832,826,820,814 -> C-1
- INT 856,850,844,838,832,826,820,814,808,802,796,791,785,779,774,768 -> C#
- INT 808,802,796,791,785,779,774,768,762,757,752,746,741,736,730,725 -> D
- INT 762,757,752,746,741,736,730,725,720,715,709,704,699,694,689,684 -> D#
- INT 720,715,709,704,699,694,689,684,678,674,670,665,660,655,651,646 -> E
- INT 678,675,670,665,660,655,651,646,640,637,632,628,623,619,614,610 -> F
- INT 640,636,632,628,623,619,614,610,604,601,597,592,588,584,580,575 -> F#
- INT 604,601,597,592,588,584,580,575,570,567,563,559,555,551,547,543 -> G
- INT 570,567,563,559,555,551,547,543,538,535,532,528,524,520,516,513 -> G#
- INT 538,535,532,528,524,520,516,513,508,505,502,498,495,491,487,484 -> A
- INT 508,505,502,498,494,491,487,484,480,477,474,470,467,463,460,457 -> A#
- INT 480,477,474,470,467,463,460,457,453,450,447,444,441,437,434,431 -> B
- INT 453,450,447,444,441,437,434,431,428,425,422,419,416,413,410,407 -> C-2
- INT 428,425,422,419,416,413,410,407,404,401,398,395,392,390,387,384 -> C#
- INT 404,401,398,395,392,390,387,384,381,379,376,373,370,368,365,363 -> D
- INT 381,379,376,373,370,368,365,363,360,357,355,352,350,347,345,342 -> D#
- INT 360,357,355,352,350,347,345,342,339,337,335,332,330,328,325,323 -> E
- INT 339,337,335,332,330,328,325,323,320,318,316,314,312,309,307,305 -> F
- INT 320,318,316,314,312,309,307,305,302,300,298,296,294,292,290,288 -> F#
- INT 302,300,298,296,294,292,290,288,285,284,282,280,278,276,274,272 -> G
- INT 285,284,282,280,278,276,274,272,269,268,266,264,262,260,258,256 -> G#
- INT 269,268,266,264,262,260,258,256,254,253,251,249,247,245,244,242 -> A
- INT 254,253,251,249,247,245,244,242,240,239,237,235,233,232,230,228 -> A#
- INT 240,238,237,235,233,232,230,228,226,225,224,222,220,219,217,216 -> B
- INT 226,225,223,222,220,219,217,216,214,213,211,209,208,206,205,204 -> C-3
- INT 214,212,211,209,208,206,205,203,202,201,199,198,196,195,193,192 -> C#
- INT 202,200,199,198,196,195,193,192,190,189,188,187,185,184,183,181 -> D
- INT 190,189,188,187,185,184,183,181,180,179,177,176,175,174,172,171 -> D#
- INT 180,179,177,176,175,174,172,171,170,169,167,166,165,164,163,161 -> E
- INT 170,169,167,166,165,164,163,161,160,159,158,157,156,155,154,152 -> F
- INT 160,159,158,157,156,155,154,152,151,150,149,148,147,146,145,144 -> F#
- INT 151,150,149,148,147,146,145,144,143,142,141,140,139,138,137,136 -> G
- INT 143,142,141,140,139,138,137,136,135,134,133,132,131,130,129,128 -> G#
- INT 135,134,133,132,131,130,129,128,127,126,125,125,124,123,122,121 -> A
- INT 127,126,125,125,123,123,122,121,120,119,118,118,117,116,115,114 -> A#
- INT 120,119,118,118,117,116,115,114,113,113,112,111,110,109,109,108 -> B
-
- /*--------------------------------------------------------------------------+
- | END: calcs.e |
- +==========================================================================*/
-